
import whiteList from "./request_white_list";
const install = (Vue, vm) => {
	Vue.prototype.$u.http.setConfig({
		baseUrl: 'https://www.gdlzjt.com/api', 
		showLoading: true,
		loadingMask: true, 
		loadingText: '努力加载中~',
		loadingTime: 400,
		// 设置自定义头部content-type
		// header: {
		// 	'content-type': 'xxx'
		// }
	});
	// 请求拦截，配置Token等参数
	Vue.prototype.$u.http.interceptor.request = (config) => {
		const token = vm.getTokenSync();
		if (whiteList.indexOf(config.url) == -1 && (!vm.userInfo || !token)) {
			uni.showModal({
				title: '提示',
				content: '本次操作需要您进行登录验证',
				success: (res) => {
					if (res.confirm) {
						vm.$u.route('/pages_login/login_entry/loginEntry');
					} else if (res.cancel) {
						console.log('用户点击取消');
					}
				}
			});
			return false
		} else {
			config.header.UserToken = token;
			return config;
		}
	}
	// 响应拦截，判断状态码是否通过
	Vue.prototype.$u.http.interceptor.response = (res) => {
		console.log('res>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>', res)
		if (res.status_code == 401 || res.status_code == 402 || res.status_code == 400) {
			console.log('请求结果拦截token过期或无token，删除token并退出登录')
			vm.removeTokenSync();
			// vm.$store.commit('$deleteCurrentUserState');
			vm.$u.route('/pages_login/login_entry/loginEntry');
			return Promise.reject(res);
		} else if (res.status_code == 429) {
			vm.$showToast('请求过于频繁,请稍后重试')
			return Promise.reject();
		}else if(res.status_code == 509){
			vm.$showToast('登录已失效，请重新登录')
			vm.$u.route('/pages_login/login_entry/loginEntry');
			return Promise.reject();
		} else if (res.status_code && res.status_code != 200) {
			let errMsg = res.info || res.msg;
			if (errMsg instanceof Array) {
				errMsg = errMsg.join(',');
			}
			vm.$showToast(errMsg)
			return Promise.reject(res);
		}
		return Promise.resolve(res);
	}
}

export default {
	install
}
